"""
实现一个基于 SQLite 数据库的信息管理程序,操作数据表tab1，并支持以下菜单
功能：
1)添加记录：2)删除记录；3)查找;4)导出到 CSV 
"""
#使用pandas导出csv
import sqlite3
import csv

# 数据库文件路径
DB_FILE = 'info_management.db'

# 初始化数据库和表
def init_db():
    conn = sqlite3.connect(DB_FILE)
    cursor = conn.cursor()
    #AUTOINCREMENT第一个记录的ID默认为1，后续每次插入自动递增
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS tab1 (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            name TEXT NOT NULL,
            age INTEGER,
            phone TEXT,
            email TEXT
        )
    ''')
    conn.commit()
    conn.close()

# 添加记录
def add_record():
    name = input('请输入姓名: ')
    age = int(input('请输入年龄: '))
    phone = input('请输入电话: ')
    email = input('请输入邮箱: ')
    
    conn = sqlite3.connect(DB_FILE)
    cursor = conn.cursor()
    cursor.execute('''
        INSERT INTO tab1 (name, age, phone, email)
        VALUES (?, ?, ?, ?)
    ''', (name, age, phone, email))
    conn.commit()
    conn.close()
    print('记录添加成功!')

# 删除记录
def delete_record():
    record_id = int(input('请输入要删除的记录ID: '))
    
    conn = sqlite3.connect(DB_FILE)
    cursor = conn.cursor()
    cursor.execute('DELETE FROM tab1 WHERE id = ?', (record_id,))#元组
    conn.commit()
    conn.close()
    print('记录删除成功!')

# 查找记录
def find_records():
    keyword = input('请输入查找的姓名: ')
    
    conn = sqlite3.connect(DB_FILE)
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM tab1 WHERE name = ?", (keyword,))

    
    results = cursor.fetchall()#fetchall() 会返回查询结果中的所有行
    conn.close()

    for row in results:
        print(f"ID: {row[0]}, 姓名: {row[1]}, 年龄: {row[2]}, 电话: {row[3]}, 邮箱: {row[4]}")
 

# 导出到CSV
def export_to_csv():
    import pandas as pd
    
    # 使用pandas读取SQLite数据
    conn = sqlite3.connect(DB_FILE)
    df = pd.read_sql('SELECT * FROM tab1', conn)#pandas读取数据库
    conn.close()
    
    # 重命名列名（可选）
    #不写的话如果SQL查询使用 SELECT id, name, age, phone, email FROM tab1 ，则列名就是这些英文名
    df.columns = ['ID', '姓名', '年龄', '电话', '邮箱']
    
    # 导出到CSV
    df.to_csv('tab1_export.csv', index=False, encoding='utf-8')
    print('数据已通过pandas导出到 tab1_export.csv')

# 主菜单
def main():
    init_db()
    while True:
        print('\n=== 信息管理系统 ===')
        print('1) 添加记录')
        print('2) 删除记录')
        print('3) 查找记录')
        print('4) 导出到CSV')
        print('5) 退出')
        
        choice = input('请选择操作(1-5): ')
        
        if choice == '1':
            add_record()
        elif choice == '2':
            delete_record()
        elif choice == '3':
            find_records()
        elif choice == '4':
            export_to_csv()
        elif choice == '5':
            print('谢谢使用，再见!')
            break
        else:
            print('输入错误，请重新选择!')

if __name__ == '__main__':
    main()

"""read_sql()参数	说明
sql	SQL 查询字符串（必填）。
con	数据库连接对象（必填）。
index_col	指定某一列作为 DataFrame 的索引（如 index_col="id"）。
columns	指定返回的列（列表形式），但通常直接在 SQL 中写 SELECT col1, col2。
params	传递参数给 SQL 查询，防止 SQL 注入（见下文）。"""